package com.zhongke.cotrun.mapper;


import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhongke.cotrun.model.pojo.PayMallInfo;

/**
 * @Description: 商品基本信息
 * @Author: songjing
 * @Date:   2020-03-20
 * @Version: V1.0
 */
public interface PayMallInfoMapper extends BaseMapper<PayMallInfo> {
	/**
     * 新增
     * @param  对象
     * @return
     */
     @Insert("insert into pay_mall_info " +
             "(main_id,type_id,title,price,is_enable,volume,stock,create_by,create_date,del_flag)" +
             " values (#{mainId},#{typeId},#{title},#{price},'0',0,#{stock},#{createBy},now(),'0')")
     public int cotrunInsert(PayMallInfo payMallInfo);
     /**
      * 分组获得主体表名
      *
      * @return
      */
 	@Select("select t.main_table,t.id from pay_mall_info m LEFT JOIN pay_mall_type t on m.type_id = t.id GROUP BY t.id")
 	public List<Map> groupMainTable();
 	/**
     * 获得指定主体表已经到截止时间的列表
     *
     * @param mainTable 主体表名称
     * @return
     */
	@Select("SELECT group_concat(id) from ${mainTable} where DATE_FORMAT(end_time,'%Y%m%d%H%i%S') < DATE_FORMAT(NOW(),'%Y%m%d%H%i%S')")
	public String selectMainListByEndTime(@Param("mainTable") String mainTable);
	/**
     * 批量更新指定mainID及类型为下架
     *
     * @param mainId 主体表主键
     * @param type_id 类型主键
     * @return
     */
	@Update("update pay_mall_info set is_enable='0' where type_id=#{typeId} and main_id in(${mainIds}) and is_enable='1'")
	public int updateEnable(@Param("typeId") Long typeId,@Param("mainIds") String mainIds);
	/**
     * 更新指定mainID及类型为下架
     *
     * @param mainId 主体表主键
     * @param type_id 类型主键
     * @return
     */
	@Update("update pay_mall_info i left join pay_mall_type t on i.type_id = t.id set i.is_enable='0' where t.type=#{type} and i.main_id = #{mainId}")
	public int updateEnableByMainId(@Param("mainId") Long mainId,@Param("type") String type);
	 /**
     * 根据商品类型查看指定商品详情
     *
     * @param mainId 主体表主键
     * @param type 主体表名称
     * @return
     */
	@Select("select i.* from pay_mall_info i left join pay_mall_type t on i.type_id = t.id where t.type=#{mainId} and i.main_id = #{mainId}")
	public PayMallInfo selectDetailByMainId(@Param("mainId") Long mainId,@Param("type") String type);
     /**
      * 根据id查看指定主体表详情
      *
      * @param mainId 主体表主键
      * @param mainTable 主体表名称
      * @return
      */
 	@Select("SELECT * from ${mainTable} WHERE id=#{mainId} and del_flag='0' ")
 	public List<Map> selectMainDetailByMainId(@Param("mainId") Long mainId,@Param("mainTable") String mainTable);
 	/**
     * 根据单号查询明细表列表
     *
     * @param 订单号
     * @param 明细表名
     * @return
     */
 	@Select("SELECT * from ${detailTable} WHERE order_code=#{orderCode} ")
	public List<Map> selectDetailListByOrderCode(@Param("orderCode") String orderCode,@Param("detailTable") String detailTable);
 	
}
